CS 262 - All Sections
Introduction to Low-level Programming
Meets
- Section 001 (Duric): Monday/Wednesday 1:30 pm - 2:45 pm in
Robinson Hall A111
- Section 002 (Nordstrom): Monday/Wednesday 12:00 pm - 1:15 pm in
Innovation Hall 132
- Section 003 (Nordstrom): Monday/Wednesday
9:00 am - 10:15 am in Robinson Hall B113
- Section 005 (Otten): Monday/Wednesday 9:00 am - 10:15 am in
Robinson Hall A111
Professors:
Zoran
Duric, David Nordstrom, and John E. Otten
Teaching Assistants:
Ali Bagheri Khaligh (Lab sections 201, 202, and 204), Al Amin Hosain (Lab
sections 203, 205, and 206), Mohammad Rezaeirad (Lab sections 208,
209, and
211) and Chaitanya Yavvari Lab section 210)
Course Web Page
piazza link
Textbook
Brian Kernighan and Dennis Ritchie, The C Programming Language, 2nd
ed., Prentice Hall, 1988.
Web resource
Zed Shaw, Learn C the Hard Way, http://c.learncodethehardway.org/book/
About the Class
Most high-level programming languages (and particularly Java) insulate the programmer from the realities of the hardware on which the programs will run. C is the exception since it was originally designed to implement the Unix operating system. C offers the programmer direct access to much of the underlying hardware and, for programs running under Unix, direct access to operating system services. For these reasons C remains the language of choice for systems programming.
This is a (short) course on "low-level" programming using C. We will learn C with heavy emphasis on pointer operations.
Topics
Planned topics include:
- C Types, Operators, and Expressions
- Control Flow
- Functions and Program Structures
- Pointers and Arrays
- Dynamic memory allocation
- Structures
- Bitwise operations
- Input and Output Libraries
- The Unix System Interface
- File I/O
Course outcomes
The students will:
- Be able to implement, test and debug a designed solution to a problem in a
low-level programming language, specifically the C programming language.
- Demonstrate a good understanding of C language constructs such as pointers,
dynamic memory management, and address arithmetic.
- Demonstrate a good understanding of C libraries for input and output, and the
interface between C programs and the UNIX operating system.
- Demonstrate an ability to use UNIX tools for program development and
debugging.
Labs
Attendance at labs is required. A short
programming assignment will be given at the beginning of the lab and
the lab instructor will be available to help students with the
programming. If not completed the lab may be taken home. Lab
assignments will be due at the beginning of the following lab
period. No late lab assignments will be accepted.
Quizzes
There will be occasional unannounced quizzes given in labs. A missed quiz cannot be made up. The lowest quiz score for the semester will be dropped.
Projects
Projects In addition to the labs there will be several larger programming projects. These will be presented and discussed in the lecture. Late programs will be accepted with a 10 points per day late penalty. You are responsible for keeping backups of your work ("my disk crashed" and "my roommate ate my program" are not reasons for late submissions). If your program isn't the way you'd like it to be when the deadline is near, submit it anyway for partial credit. Blackboard permits you to retrieve and resubmit your assignment until the due date, so you may resubmit if you improve your program prior to the deadline. Any resubmissions after the deadline require approval from the TA. No resubmissions may be made after a project has been graded.
Individual work
You are free to discuss ideas for both the labs and projects with other students, however no joint work is permitted. Any submitted work must be yours alone. Any work which shows too much similarity with others' submitted work will receive a grade of 0. Extreme or repeat cases may result in failing the course or referral to the Honor Commitee.
Read the CS
Department honor code and the University honor code. You are
bound by these honor codes.
Grading
In addition to the labs and projects there will be a midterm exam and a final. There
will be no makeups on exams except under exceptional circumstances (as judged by
instructors), and any such makeup must be arranged in advance. Grades will be computed using a weighted average of these scores with the weights:
- labs: 20% (25% of the grade will be given for attendance)
- quizzes: 10%
- projects: 30%
- midterm exams: 20%
- final exam: 20%
In addition, to get a passing grade in the course you must obtain at
least 60% average grade on exams AND you must submit all
projects and labs.